package com.cy.dda.service.diligencing;

import com.cy.dda.model.PageBean;
import com.cy.dda.model.ao.diligencing.DiligencingEditAO;
import com.cy.dda.model.ao.diligencing.DiligencingReportAuditAO;
import com.cy.dda.model.dto.comm.OSSFileDownloadDTO;
import com.cy.dda.model.dto.diligencing.DiligencingAdminListExportDTO;
import com.cy.dda.model.dto.diligencing.DiligencingImportDTO;
import com.cy.dda.model.query.diligencing.DiligencingAdminListQuery;
import com.cy.dda.model.query.diligencing.DiligencingListQuery;
import com.cy.dda.model.vo.diligencing.DiligencingAdminDetailVO;
import com.cy.dda.model.vo.diligencing.DiligencingAdminListVO;
import com.cy.dda.model.vo.diligencing.DiligencingDetailVO;
import com.cy.dda.model.vo.diligencing.DiligencingListVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.BufferedOutputStream;
import java.util.List;

/**
 * @Description 尽调 service
 * @Author tanyilin
 * @Date 2019/5/29 17:43
 */
public interface DiligencingService {

    /**
     * 后台-从输入的Excel文件中解析数据，得到导入的 尽调案件 信息
     * @param multipartFile
     * @return java.util.List<com.cy.dda.model.dto.diligencing.DiligencingImportDTO>
     */
    List<DiligencingImportDTO> getDiligencingImportDTO(MultipartFile multipartFile);

    /**
     * 后台-添加保存尽调案件数据
     * @param diligencingImportList
     * @return void
     */
    void addDiligencings(List<DiligencingImportDTO> diligencingImportList);

    /**
     * 后台-指定用户分配尽调案件
     * @param diligencingId
     * @param userId
     * @return void
     */
    void appointDistributeDiligencing(Long diligencingId, Long userId);

    /**
     * 后台-查询尽调案件列表
     * @param query
     * @return com.cy.dda.model.PageBean<com.cy.dda.model.vo.diligencing.DiligencingAdminListVO>
     */
    PageBean<DiligencingAdminListVO> selectDiligencingAdminList(DiligencingAdminListQuery query);

    /**
     * 后台-查询尽调案件详情
     * @param diligencingId
     * @return com.cy.dda.model.vo.diligencing.DiligencingAdminDetailVO
     */
    DiligencingAdminDetailVO getDiligencingAdminDetail(Long diligencingId);

    /**
     * 后台-编辑尽调案件信息
     * @param editAO
     * @return void
     */
    void doEditDiligencing(DiligencingEditAO editAO);

    /**
     * 后台-审核尽调报告
     * @param auditAO
     * @return void
     */
    void doAuditDiligencingReport(DiligencingReportAuditAO auditAO, Long managerId);

    /**
     * 后台-得到导出的尽调案件列表
     * @param query
     * @return java.util.List<com.cy.dda.model.dto.diligencing.DiligencingAdminListExportDTO>
     */
    List<DiligencingAdminListExportDTO> getDiligencingAdminListExport(DiligencingAdminListQuery query);

    /**
     * 前台-查询尽调案件客户列表
     * @param query
     * @return com.cy.dda.model.PageBean<com.cy.dda.model.vo.diligencing.DiligencingListVO>
     */
    PageBean<DiligencingListVO> getDiligencingList(DiligencingListQuery query);

    /**
     * 前台-查询尽调案件 详情
     * @param diligencingId
     * @return com.cy.dda.model.vo.diligencing.DiligencingDetailVO
     */
    DiligencingDetailVO getDiligencingDetail(Long diligencingId);

    /**
     * 查询需要该尽调案件报告需要下载的文件数组
     * @param diligencingId
     * @return java.util.List<com.cy.dda.model.dto.comm.OSSFileDownloadDTO>
     */
    List<OSSFileDownloadDTO> getOSSFileDownloadDTO(Long diligencingId);
}
